/**
 * 使用 Promise 封装 wx.request 请求
 * @param {string} url 请求的URL地址
 * @param {string} method 请求的方法
 * @param {Object} data 请求的参数
 * @returns {Promise} 返回 Promise，resolve 返回成功结果，reject 返回失败信息
 */
function request(url, method, data) {
  return new Promise((resolve, reject) => {
      // 显示加载中的提示
      wx.showLoading({
        title: '加载中...',
        mask: true
      });
      // 发起网络请求
      wx.request({
        url: url,
        method: method,
        data: data,
        header: {
          'Authorization': getApp().globalData.userToken
        },
        success: (res) => {
          if (res.statusCode === 200) {
            resolve(res.data);
          } else {
            if (res.statusCode === 401) {
              console.log('Token失效，重新登录')
              getApp().userLogin();
            } else {
              reject({
                code: res.statusCode,
                message: res.data.message
              });
            }
          }
        },
        fail: (error) => {
          reject(error);
        },
        complete: () => {
          setTimeout(() => {
            // 隐藏加载提示
            wx.hideLoading();
          }, 700);
        }
      });
    })
    .catch(error => {
      console.error('请求失败:', error);
      // 弹出加载失败的提示
      wx.showToast({
        title: '加载失败，请重试',
        icon: 'none',
        duration: 5000
      });
      throw error;
    });
}

module.exports = {
  request: request
};